package com.woniuxy.hrms.dao.impl;

import com.woniuxy.hrms.dao.IDeptDao;
import com.woniuxy.hrms.entity.Dept;
import com.woniuxy.hrms.util.DBUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 * @program: hrms
 * @description:
 * @create: 2024-08-08 17:37
 **/
public class IDeptDaoImpl implements IDeptDao {
    Connection connection;
    PreparedStatement ps;
    ResultSet rs;
    String sql;
    @Override
    public int add(Dept dept) throws SQLException {
        connection= DBUtil.getCon();
        sql="insert into dept values(?,?,?)";
        ps=connection.prepareStatement(sql);
        ps.setInt(1,dept.getId());
        ps.setString(2, dept.getDeptName());
        ps.setString(3, dept.getRemark());
        int i=ps.executeUpdate();
        DBUtil.release(connection,ps,rs);
        return i;
    }

    @Override
    public int delete(int dept_id) throws SQLException {
        connection= DBUtil.getCon();
        sql="delete from dept where dept_id=?";
        ps=connection.prepareStatement(sql);
        ps.setInt(1,dept_id);
        int i=ps.executeUpdate();
        DBUtil.release(connection,ps,rs);
        return i;
    }

    @Override
    public int update(Dept dept) throws SQLException {
        connection= DBUtil.getCon();//通过工具类得到连接对象
        sql="update dept set dept_name=?,remark=? where dept_id=?";
        ps=connection.prepareStatement(sql);
        ps.setString(1, dept.getDeptName());
        ps.setString(2, dept.getRemark());
        ps.setInt(3,dept.getId());
        int i=ps.executeUpdate();
        DBUtil.release(connection,ps,rs);//释放连接等信息
        return i;
    }

    @Override
    public List<Dept> queryALL() throws SQLException {
        ArrayList<Dept> list = new ArrayList<>();
        connection=DBUtil.getCon();//通过工具类得到连接对象
        sql="select * from dept";
        ps=connection.prepareStatement(sql);
        rs=ps.executeQuery();//执行查询并返回一个resultset对象，有一个指针指向到第一条数据之前
        while (rs.next()) {//如果有下一条数据，则指向到下条数据，如果没有就返回false
            int deptId=rs.getInt(1);
            String deptName=rs.getString(2);
            String remark=rs.getString("remark");
            Dept dept=new Dept(deptId,deptName,remark);
            list.add(dept);//把对象存放到list中
        }
        DBUtil.release(connection,ps,rs);//释放连接对象等信息
        return list;
    }

    @Override
    public Dept queryByld(int id) throws SQLException {
        Dept dept=null;//声明一个Dept类型的变量
        connection=DBUtil.getCon();//通过工具类得到连接对象
        sql="select * from dept where dept_id=?";
        ps=connection.prepareStatement(sql);
        ps.setInt(1,id);
        rs=ps.executeQuery();//执行查询并返回一个resultset对象，有一个指针指向到第一条数据之前
        if (rs.next()) {//如果有下一条数据，则指向到下条数据，如果没有就返回false
            int deptId=rs.getInt(1);
            String deptName=rs.getString(2);
            String remark=rs.getString("remark");
            dept=new Dept(deptId,deptName,remark);
        }
        DBUtil.release(connection,ps,rs);
        return dept;
    }
}
